#ifndef GAMEENGINE_GEOMETRY_COORDS3D_H
#define GAMEENGINE_GEOMETRY_COORDS3D_H

#include <GameEngine/Geometry/geometry_settings.h>


#ifdef GAMEENGINE_NAMESPACES
namespace GameEngine {
#endif

//! Class used to represent 3D coordinates
template <class T>
class Coords3d {

public:
	Coords3d();
	Coords3d(const T& u, const T& v, const T& w);
	Coords3d(const Coords3d& rhs);
	virtual ~Coords3d();
	Coords3d& operator=(const Coords3d& rhs);

	const T& u() const;
	T& u();
	const T& v() const;
	T& v();
	const T& w() const;
	T& w();

protected:
	//! First parametric coordinate
	T u_;

	//! Second parametric coordinate
	T v_;

	//! Third parametric coordinate
	T w_;
};

#ifdef GAMEENGINE_NAMESPACES
} // namespace GameEngine
#endif

#include <GameEngine/Geometry/Core/coords3d.hpp>

#endif
